﻿using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Dominio;
using Persistencia;

namespace PersistenciaImplementacion
{
    class BrokerSurtidor : Broker
    {
        public override string GetSQLCreate()
        {
            return "INSERT INTO Surtidor (borrado) VALUES (@borrado)SELECT SCOPE_IDENTITY()";
        }

        public override string GetSQLDelete()
        {
            return "UPDATE Surtidor set borrado = @borrado where idSurtidor = @idSurtidor";
        }

        public override string GetSQLUpdate()
        {
            return "UPDATE Surtidor SET borrado = @borrado WHERE idSurtidor = @idSurtidor";
        }

        public override string GetSQLSelect()
        {
            return "SELECT * FROM Surtidor WHERE borrado=0";
        }
        
        public override void LoadReferences(SqlCommand comando, ObjetoPersistible obj)
        {
            SqlParameter borrado = new SqlParameter("@borrado", (obj as Surtidor).Borrado);
            SqlParameter idSurtidor = new SqlParameter("@idSurtidor", (obj as Surtidor).IdSurtidor);
            comando.Parameters.Add(borrado);
            comando.Parameters.Add(idSurtidor);
        }

        public override ObjetoPersistible ReaderToObject(System.Data.Common.DbDataReader reader)
        {
            int idSurtidor = Int32.Parse(reader["idSurtidor"].ToString());
            Surtidor sur = new Surtidor(idSurtidor);
            Sistema.GetSistema().AgregarSurtidor(sur);
            
            return sur;
        }

        public override string InsertarHijos(object objeto, ObjetoPersistible obj)
        {
            Surtidor sur = (Surtidor)obj;
            sur.IdSurtidor = Int32.Parse(objeto.ToString());
            return null;
        }

        public override void LoadReferencesWhere(SqlCommand comando, ObjetoPersistible obj)
        {
            SqlParameter borrado = new SqlParameter("@borrado", (obj as Surtidor).Borrado);
            SqlParameter idSurtidor = new SqlParameter("@idSurtidor", (obj as Surtidor).IdSurtidor);
            comando.Parameters.Add(borrado);
            comando.Parameters.Add(idSurtidor);
        }
    }
}
